#[macro_use(lazy_static)]
extern crate lazy_static;

pub mod ccbinds;
pub mod curve;
pub mod ecc_const;
pub mod ecc_key;
pub mod mont;
pub mod point;
pub mod test_data;
mod u256;

#[cfg(target_endian = "little")]
pub use mont::{Mont, MontSM2p, Montgomery};
#[cfg(target_endian = "little")]
pub use point::Point;
#[cfg(target_endian = "little")]
pub use u256::U256;

pub use curve::Curve;
pub use curve::{CurveSM2, TypeSM2};

#[cfg(test)]
mod tests {
    #[test]
    fn u256_works() {
        let result = 2 + 2;
        assert_eq!(result, 4);
        #[cfg(not(target_endian = "little"))]
        assert!(false, "Not little endian platform");
    }
}
